Extensible Messaging and Presence Protocol

Logo protokolu XMPP

Extensible Messaging and Presence Protocol (XMPP) (dříve známý jako Jabber [ˈdžæbə(r)]), neboli „rozšiřitelný protokol pro posílání zpráv a zjištění stavu“, původně vznikl jako protokol pro instant messagingovou síť Jabber. Brzy se ale ukázalo, že kromě IM může být s výhodou použit i pro vzájemnou komunikaci programů nebo pro ovládání různých automatických služeb (botů). Později byl adoptován jakožto standard Internetu do RFC dokumentů – základní normy jsou RFC 3920 (obecná specifikace protokolu) a RFC 3921 (samotný instant messaging a zobrazení stavu). RFC obsahující některá další rozšíření XMPP protokolu jsou například RFC 3922 a RFC 3923. O vývoj protokolu se stará XMPP Standards Foundation. Rozšíření nad rámec RFC jsou vydávána v podobě tzv. XEP (XMPP Extension Protocol), kterých je momentálně kolem dvou set (v různém stavu, od prvních návrhů až po standardy). XMPP je implementací obecného značkovacího jazyka XML. Specifikace jsou zcela otevřené a dostupné všem, kdo mají zájem o implementaci software s podporou XMPP. Servery XMPP protokolu běží standardně na TCP portu 5222. Pro vzájemnou komunikaci serverů je pak vyhrazen port 5269.

XMPP zapouzdřuje zprávy do XML

Síť využívající XMPP protokol není centralizovaná do jednoho místa, jako je zvykem u většiny ostatních IM, ale je distribuovaná na servery po celém světě, na kterých je možno si založit uživatelské konto. Identifikátory uživatelů (takzvané Jabber ID, zkráceně JID) jsou v základním tvaru syntakticky i sémanticky podobné e-mailovým adresám, tedy uzivatel@server. Uživatel si může dále své konto rozdělit podle potřeby, například se může jeho klient z domova hlásit jako uzivatel@server/doma, a zároveň třeba i uzivatel@server/prace. Na jedno uživatelské konto může tedy být přihlášeno i více klientů najednou a mezi nimi se rozhoduje buď podle celé adresy, pokud ji druhá strana zadá, nebo podle nastavené priority.

Uživatel se připojuje vždy pouze ke svému serveru, protože jenom tento server je schopen ověřit jeho identitu například pomocí uživatelského jména a hesla. Pokud vznikne potřeba komunikovat s uživateli na jiných serverech, připojí se uživatelův server na vzdálený server a předá si s ním potřebné informace. Toto je nutné vykonávat například i v případě, že je třeba zjistit prezenci, tedy zdali je uživatel na vzdáleném serveru přihlášen a v jakém je stavu. Kromě serverů a klientů se v síti vyskytují ještě různé služby – například služba víceuživatelských diskuzí (funkčně velmi podobné IRC), uživatelské adresáře a transporty. Transporty jsou vlastně brány mezi XMPP sítí a IM sítí pracující na jiném protokolu.

Ukázka transportu do ICQ

Developed by StudentB